package cn.virens.common.mybatis.init;

import cn.virens.common.util.exception.APIException;
import org.dromara.hutool.core.date.DateUtil;

import java.util.Date;

public class InitExecutorUtil {
    public static final String Y = "yyyy";
    public static final String YM = "yyyyMM";
    public static final String YMD = "yyyyMMdd";

    /**
     * 获取下年份字符串
     */
    public static String nextYear() throws APIException {
        return fmt(DateUtil.thisYear() + 1);
    }

    /**
     * 获取下月份字符串
     */
    public static String nextMon() throws APIException {
        return fmt(DateUtil.nextMonth(), YM);
    }

    /**
     * 获取上一个年份字符串
     */
    public static String lyear() throws APIException {
        return fmt(DateUtil.thisYear() - 1);
    }

    /**
     * 获取上一个月份字符串
     */
    public static String lmon() throws APIException {
        return fmt(DateUtil.lastMonth(), YM);
    }

    /**
     * 获取上一个日期字符串
     */
    public static String lday() throws APIException {
        return fmt(DateUtil.yesterday(), YMD);
    }

    /**
     * 获取当前年份字符串
     */
    public static String year() throws APIException {
        return fmt(DateUtil.thisYear());
    }

    /**
     * 获取当前月份字符串
     */
    public static String mon() throws APIException {
        return fmt(new Date(), YM);
    }

    /**
     * 获取当前日期字符串
     */
    public static String day() throws APIException {
        return fmt(new Date(), YMD);
    }

    private static String fmt(Date d, String fmts) {
        return DateUtil.format(d, fmts);
    }

    private static String fmt(Integer v) {
        return Integer.toString(v);
    }
}
